package com.wsoft.cms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.wsoft.cms.entity.CmsAnnouncementEntity;
import com.wsoft.cms.query.announcement.*;
import com.wsoft.cms.vo.anno.AnnouncementListVO;
import com.wsoft.cms.vo.anno.AnnouncementVO;

/**
 * <p>
 * 新闻公告表 服务类
 * </p>
 *
 * @author juiet
 * @since 2024年11月27日 10:32:23
 */
public interface ICmsAnnouncementService extends IService<CmsAnnouncementEntity> {

    /**
     * 新增新闻公告
     * @param query
     * @return
     */
    boolean insertAnno(AnnouncementInsertQuery query);

    /**
     * 修改新闻公告
     * @param query
     * @return
     */
    boolean updateAnno(AnnouncementUpdateQuery query);

    /**
     * 获取公告详情
     *  ==> 计算浏览量
     * @param id
     * @return
     */
    AnnouncementVO getInfoByUser(Long id);

    /**
     * 获取公告详情
     * ==> 不计算浏览量
     * @param id
     * @return
     */
    AnnouncementVO getInfoByAdmin(Long id);

    /**
     * 发布公告
     * @param query
     * @return
     */
    boolean publish(AnnouncementPublishQuery query);

    /**
     * 撤销公告
     * @param id
     * @return
     */
    boolean cancel(Long id);

    /**
     * 公告分页
     * @param query
     * @param isUser
     * @return
     */
    PageInfo<AnnouncementListVO> listAnno(AnnouncementListQuery query, boolean isUser);

    /**
     * 一键已读
     * @return
     */
    boolean allRead();

    /**
     * 删除公告
     * @param id
     * @return
     */
    boolean delete(Long id);

    /**
     * 修改公告附件
     * @param query
     * @return
     */
    boolean updateFile(AnnouncementFileUpdateQuery query);
}
